/**
 * 
 */
package agents.persons.independent;

import jade.domain.DFService;
import jade.domain.FIPAException;
import jade.domain.FIPAAgentManagement.DFAgentDescription;

import java.awt.Point;

import log.Action;
import log.ContadorEventos;

import org.apache.log4j.Logger;

import com.avanti.routes.ListaCuadrantes;

import util.AgentHelper;
import agents.beans.IndependentBean;
import agents.persons.Person;
import constants.Situacion;

/**
 * @author Elena
 * 
 */
public class IndependentAgent extends Person
{

	/**
	 * 
	 */
	
	private static final long serialVersionUID = 4602234280462085266L;
	private DFAgentDescription dfd;

	private long salud = 1;
	private int situacion = Situacion.NORMAL;

	public long getSalud()
	{
		return salud;
	}

	public void setSalud(long salud)
	{
		this.salud = salud;
	}

	public int getSituacion()
	{
		return situacion;
	}

	public void setSituacion(int situacion)
	{
		this.situacion = situacion;
	}

	// private int degree;

	// private Map map;//mapa de la habitaci�n, con las casillas ocupadas etc.
	// private PathFinding busqueda;
	// private ArrayList<Cell> camino;

	static Logger logger = Logger.getLogger(IndependentAgent.class);
	
	private int idCuadranteMaldito;//Si es -1 : no hay maldito
	private int idCuadranteDestinoAlternativo; 

	public int getIdCuadranteMaldito() {
		return idCuadranteMaldito;
	}

	public void setIdCuadranteMaldito(int idCuadranteMaldito) {
		this.idCuadranteMaldito = idCuadranteMaldito;
	}

	public int getIdCuadranteDestinoAlternativo() {
		return idCuadranteDestinoAlternativo;
	}

	public void setIdCuadranteDestinoAlternativo(int idCuadranteDestinoAlternativo) {
		this.idCuadranteDestinoAlternativo = idCuadranteDestinoAlternativo;
	}

	// Inicializaciones del agente
	protected void setup()
	{
		IndependentBean bean = (IndependentBean) this.getArguments()[0];
		setPosicion(bean.getPosicion());
		idCuadranteMaldito = bean.getIdCuadranteMaldito();
		idCuadranteDestinoAlternativo = bean.getIdCuadranteDestinoAlternativo();
		//posicionDestinoAlternativo = bean.getPosicionDestinoAlternativo();
		//System.out.println("## Punto "+getPosicion().x+","+getPosicion().y+"-> Cuad: "+getCuadranteActual());
		dfd = new DFAgentDescription();
		dfd.setName(getAID());
		addBehaviour(new Go2SafePlaceBehaviourIndependet(this, 202));
		String[] anuncio = new String[] {"generacion-coordenadas","independiente"};
		AgentHelper.register(this, anuncio);
		logger.info(ContadorEventos.addEvent(Integer.toString(ListaCuadrantes.getInstance().getIdCuadrante(this.getPosicion())), Action.NACER, ""));
	}

	protected void takeDown()
	{

		try
		{
			DFService.deregister(this);
		}
		catch (FIPAException e)
		{
			e.printStackTrace();
		}
		logger.info(ContadorEventos.addEvent("Casa", "Muerte", ""));
	}
}
